<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>state</title>
</head>
<body>
     <!-- 准备好一个"容器" -->
     <div id="test"></div>
     <!-- 引入react核心库 -->
     <script type="text/javascript" src="../js/react.development.js"></script>
     <!-- 引入react-dom，用于支持react操作DOM -->
     <script type="text/javascript" src="../js/react-dom.development.js"></script>
     <!-- 引入babel，用于将jsx转为js -->
     <script type="text/javascript" src="../js/babel.min.js"></script>
     <script type="text/babel">
        class Weather extends React.Component{

            constructor(props){
                console.log('constructor')
                super(props)
                // 初始化状态
                this.state={isHot:false,wind:'微风'}
                //解决 changeWeather 中this 指向的问题
                this.changeWeather=this.changeWeather.bind(this)
                
            }
            // 改变天气的方法
            changeWeather(){
                //changeWeather 放在哪里? ------Weather 的原型对象上, 供实例使用
                // 由于changeWeather 是作为onClick的回调,所以不是通过实例调用, 是直接调用 
                // 类中的方法默认开启局部的严格模式, changeWeather中的this为undefined
                
                console.log(this)
                // 获取原来的hot的值
                const isHot=this.state.isHot;
                // 更新状态 
                this.setState({isHot:!isHot})
                //严重注意：状态(state)不可直接更改，下面这行就是直接更改！！！
				//this.state.isHot = !isHot //这是错误的写法

            }

            render() {
                // this.changeWeather()
                const {isHot}=this.state
                return <h1 onClick={this.changeWeather}>今天天气{isHot?'很热':'凉爽'}</h1>
                // return <h1 onClick={this.changeWeather}>今天天气凉爽</h1>
            }
        }
        ReactDOM.render(<Weather/>,document.getElementById('test'))
     </script>
</body>
</html>